package br.edu.ifrn.mb;

import javax.faces.application.FacesMessage;
import javax.mail.internet.AddressException;

import br.edu.ifrn.dominio.Mailer;
import br.edu.ifrn.dominio.Usuario;
import br.edu.ifrn.util.FacesUtil;


public class ManageMailer {
	private Usuario userFrom;
	private String userTo;
	private String assunto;
	private String mensagem;
	
	public ManageMailer() {
		super();
		this.setUserFrom(FacesUtil.getSessionUser().getUsuario());
	}
	
	public String getTitulo() {
		return "Envio de E-mails";
	}
	
	public String sendMailer(){
		return "SendMailer";
	}
	
	public String enviar(){
		int erro  = 0;
		if(this.userTo == null || this.userTo.trim() == ""){
			FacesUtil.adicionarMensagemErro("Campo 'para' deve ser preenchido");
			erro++;
		}
		if(this.assunto == null || this.assunto.trim() == ""){
			FacesUtil.adicionarMensagemErro("Campo 'assunto' deve ser preenchido");
			erro++;
		}
		if(this.mensagem == null || this.mensagem.trim() == ""){
			FacesUtil.adicionarMensagemErro("Campo 'mensagem' deve ser preenchido");
			erro++;
		}
		
		
		if (erro == 0){
			int i = 0;
			String[] users = userTo.split(";");
			try {
				
				for (String user : users) {
					Mailer.sendMail(userFrom, user, assunto, mensagem);
					i++;
				}
				FacesUtil.adicionarMensagem(null, i+" e-mail(s) enviado(s) com sucesso.", FacesMessage.SEVERITY_INFO);
				return "";
			} catch (AddressException e) {
				FacesUtil.adicionarMensagemErro("Email inválido na lista de destinatários: " + users[i]);
				e.printStackTrace();
				return "";
			} catch (Exception e) {
				FacesUtil.adicionarMensagemErro("Algum erro ocorreu ao enviar o email");
				e.printStackTrace();
				return "";
			}
		}else{
			return "";
		}
	}
	/*
	public String pesquisarTodosCurso() throws NegocioException{
		this.dadosPesquisa = this.getDao().consultarTodos(" WHERE instrumentoConclusao.aluno.curso.coordenador.id  = "+FacesUtil.getSessionUser().getUsuario().getId(), "");
		return getPaginaPesquisa();
	}
	
	public String pesquisarTodosDiretoria() throws NegocioException{
		this.dadosPesquisa = this.getDao().consultarTodos(" WHERE instrumentoConclusao.aluno.curso.diretoria.id  = "+FacesUtil.getSessionUser().getDiretoria().getId(), "");
		return getPaginaPesquisa();
	}
	public void filtrar() throws NegocioException {
		if (FacesUtil.getSessionUser().getUsuario().isDiretor()) {
			this.dadosPesquisa = this.getDao().consultarTodos(" WHERE (UPPER(instrumentoConclusao.aluno.matricula) LIKE '%"+this.getMatriculaNomeAlunoPesquisa().toUpperCase()+"%' OR UPPER(instrumentoConclusao.aluno.nome) LIKE '%"+this.getMatriculaNomeAlunoPesquisa().toUpperCase()+"%' AND " +
					" UPPER(instrumentoConclusao.orientador.nome) LIKE '%"+this.getNomeOrientadorPesquisa().toUpperCase()+"%' ) AND instrumentoConclusao.aluno.curso.diretoria.id = "+FacesUtil.getSessionUser().getDiretoria().getId(), "");
		}else if (FacesUtil.getSessionUser().getUsuario().isCoordenador()){
			this.dadosPesquisa = this.getDao().consultarTodos(" WHERE (UPPER(instrumentoConclusao.aluno.matricula) LIKE '%"+this.getMatriculaNomeAlunoPesquisa().toUpperCase()+"%' OR UPPER(instrumentoConclusao.aluno.nome) LIKE '%"+this.getMatriculaNomeAlunoPesquisa().toUpperCase()+"%' AND " +
					" UPPER(instrumentoConclusao.orientador.nome) LIKE '%"+this.getNomeOrientadorPesquisa().toUpperCase()+"%' )  AND instrumentoConclusao.aluno.curso.coordenador.id = "+FacesUtil.getSessionUser().getUsuario().getId(), "");
		}
	}
	*/

	public void setUserFrom(Usuario userFrom) {
		this.userFrom = userFrom;
	}

	public Usuario getUserFrom() {
		return userFrom;
	}

	public void setUserTo(String userTo) {
		this.userTo = userTo;
	}

	public String getUserTo() {
		return userTo;
	}

	public void setAssunto(String assunto) {
		this.assunto = assunto;
	}

	public String getAssunto() {
		return assunto;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public String getMensagem() {
		return mensagem;
	}

}
